Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.
 
 

149 lignes
6.7 KiB

  1. import React from 'react'
  2. import Navbar from "@/components/_App/Navbar"
  3. import Footer from "@/components/_App/Footer"
  4. import PageBanner from '@/components/Common/PageBanner'
  5. import ProductSlider from '@/components/Shop/ProductSlider'
  6. import ProductsDetailsTabs from '@/components/Shop/ProductsDetailsTabs'
  7. import * as Icon from 'react-feather'
  8. import { useSelector, useDispatch } from 'react-redux'
  9. import { useRouter } from 'next/router'
  10. import { useToasts } from 'react-toast-notifications'
  11. const ProductDetails = () => {
  12. const { addToast } = useToasts()
  13. const dispatch = useDispatch()
  14. const router = useRouter()
  15. const productId = router.query.id
  16. const product = useSelector((state) => state.products.find(item => item.id === productId))
  17. const [qty, setQty] = React.useState(1)
  18. const increment = () => {
  19. setQty(qty + 1)
  20. }
  21. const decrement = () => {
  22. setQty(qty - 1)
  23. }
  24. const addToCart = () => {
  25. dispatch({
  26. type: 'ADD_QUANTITY_WITH_NUMBER',
  27. id: productId,
  28. qty: qty
  29. })
  30. addToast('Cart Added Successfully', { appearance: 'success' })
  31. }
  32. return (
  33. <>
  34. <Navbar />
  35. <PageBanner pageTitle={product && product.name} />
  36. <div className="shop-details-area ptb-80">
  37. <div className="container">
  38. <div className="row align-items-center">
  39. <div className="col-lg-5">
  40. <ProductSlider images={product && product.images} />
  41. </div>
  42. <div className="col-lg-7">
  43. <div className="products-details">
  44. <h3>{product && product.name}</h3>
  45. <div className="price">
  46. ${product && product.price}
  47. </div>
  48. <ul className="rating">
  49. <li><i className="flaticon-star-1"></i></li>
  50. <li><i className="flaticon-star-1"></i></li>
  51. <li><i className="flaticon-star-1"></i></li>
  52. <li><i className="flaticon-star-1"></i></li>
  53. <li><i className="flaticon-star-1"></i></li>
  54. </ul>
  55. <p>{product && product.desc}</p>
  56. <div className="availability">
  57. Availability: <span>{product && product.availability}</span>
  58. </div>
  59. <form onSubmit={e => e.preventDefault()}>
  60. <div className="quantity d-flex align-items-center">
  61. <span>Quantity:</span>
  62. <div className="input-counter">
  63. <span className="minus-btn" onClick={decrement}>
  64. <Icon.Minus />
  65. </span>
  66. <input type="text" min="1" value={qty} onChange={e => e} />
  67. <span className="plus-btn" onClick={increment}>
  68. <Icon.Plus />
  69. </span>
  70. </div>
  71. </div>
  72. <button type="submit" onClick={addToCart}>Add to Cart</button>
  73. <a href="#" className="add-to-wishlist-btn" title="Add to Wishlist">
  74. <Icon.Heart />
  75. </a>
  76. </form>
  77. <div className="custom-payment-options">
  78. <span>Guaranteed safe checkout:</span>
  79. <div className="payment-methods">
  80. <img src="/images/payment-image/payment-img1.svg" alt="image" />
  81. <img src="/images/payment-image/payment-img2.svg" alt="image" />
  82. <img src="/images/payment-image/payment-img3.svg" alt="image" />
  83. <img src="/images/payment-image/payment-img4.svg" alt="image" />
  84. <img src="/images/payment-image/payment-img5.svg" alt="image" />
  85. <img src="/images/payment-image/payment-img6.svg" alt="image" />
  86. <img src="/images/payment-image/payment-img7.svg" alt="image" />
  87. </div>
  88. </div>
  89. <div className="products-share-social">
  90. <span>Share:</span>
  91. <ul>
  92. <li>
  93. <a href="#" className="facebook" target="_blank">
  94. <Icon.Facebook />
  95. </a>
  96. </li>
  97. <li>
  98. <a href="#" className="twitter" target="_blank">
  99. <Icon.Twitter />
  100. </a>
  101. </li>
  102. <li>
  103. <a href="#" className="linkedin" target="_blank">
  104. <Icon.Linkedin />
  105. </a>
  106. </li>
  107. <li>
  108. <a href="#" className="instagram" target="_blank">
  109. <Icon.Instagram />
  110. </a>
  111. </li>
  112. </ul>
  113. </div>
  114. </div>
  115. </div>
  116. <div className="col-lg-12 col-md-12">
  117. <ProductsDetailsTabs />
  118. </div>
  119. </div>
  120. </div>
  121. </div>
  122. <Footer />
  123. </>
  124. )
  125. }
  126. export default ProductDetails;